#ifndef __HW_H_
#define __HW_H_

#include <stdint.h>

/* PL011 UART 寄存器定义 */
#define UART0_BASE 0x10009000

/* 寄存器偏移量 */
#define UARTDR     (*(volatile uint32_t *)(UART0_BASE + 0x00))   /* 数据寄存器 */
#define UARTRSR    (*(volatile uint32_t *)(UART0_BASE + 0x04))   /* 接收状态寄存器 */
#define UARTFR     (*(volatile uint32_t *)(UART0_BASE + 0x18))   /* 标志寄存器 */
#define UARTILPR   (*(volatile uint32_t *)(UART0_BASE + 0x20))   /* 低功耗计数器 */
#define UARTIBRD   (*(volatile uint32_t *)(UART0_BASE + 0x24))   /* 整数波特率除数 */
#define UARTFBRD   (*(volatile uint32_t *)(UART0_BASE + 0x28))   /* 小数波特率除数 */
#define UARTLCR_H  (*(volatile uint32_t *)(UART0_BASE + 0x2C))   /* 线路控制寄存器 */
#define UARTCR     (*(volatile uint32_t *)(UART0_BASE + 0x30))   /* 控制寄存器 */
#define UARTIFLS   (*(volatile uint32_t *)(UART0_BASE + 0x34))   /* FIFO 控制寄存器 */
#define UARTIMSC   (*(volatile uint32_t *)(UART0_BASE + 0x38))   /* 中断屏蔽寄存器 */
#define UARTRIS    (*(volatile uint32_t *)(UART0_BASE + 0x3C))   /* 原始中断状态 */
#define UARTMIS    (*(volatile uint32_t *)(UART0_BASE + 0x40))   /* 屏蔽中断状态 */
#define UARTICR    (*(volatile uint32_t *)(UART0_BASE + 0x44))   /* 中断清除寄存器 */

/* 标志寄存器位定义 */
#define UARTFR_TXFF (1 << 5)  /* 发送 FIFO 满 */
#define UARTFR_RXFE (1 << 4)  /* 接收 FIFO 空 */


#endif

